Flexible deployment and migration of virtual machines

ABSTRACT

Virtual machines in a computer system cluster, or cloud environment, require access to their assigned storage resources connected to the virtual machines via storage area networks (SAN). Such virtual machines may be independent from associated physical servers in the computer system cluster on which they are deployed. These virtual machines may dynamically migrate among assigned physical servers while maintaining access to their connected storage resources both from the source physical server and the target physical server during the migration.

FIELD OF THE INVENTION

The present invention relates generally to the field of networking, andmore particularly to deployment and migration of virtual machines withSAN (storage area network)-attached storage.

BACKGROUND OF THE INVENTION

Conventional networked computers environments for deployment andmigration of virtual servers with (SAN)-attached storage are set up asfollows. A cluster of physical servers (PS) is configured such that eachPS hosts multiple virtual machines, herein referred to as virtualservers (VSs). The VSs access the fiber channel (FC)-SAN-attachedstorage devices via host bus adapters (HBAs). The VSs are flexiblydeployed on different PSs. These VSs are migrated among the PSs withinthe cluster. The PSs and storage controllers are connected via SANs. ASAN is made up of one, or more, FC switches. The PSs and storagecontrollers access a SAN by using HBAs. Each HBA has a world-wide uniqueport name (WWPN). The FC-SAN-attached storage devices are identifiedwith logical unit numbers (LUNs).

Access to the storage devices is controlled via zoning and LUN masking.Zoning defines which ports are able to communicate, including the FCswitch ports. LUN masking defines which HBAs can access a particularLUN. HBAs are identified according to their WWPNs.

In a VS environment, the HBAs are conventionally virtualized such thateach HBA represents multiple virtual HBAs (vHBAs). Many HBAvirtualization techniques exist, including: (i) single root I/Ovirtualization (SR-IOV) (an extension to the Peripheral ComponentInterconnect Express (PCIe) standard); (ii) many proprietary methods;and (iii) N_Port ID Virtualization (NPIV). N_Port ID Virtualization isan FC facility allowing multiple N_Port IDs to share a single physicalN_Port. This allows multiple FC initiators to occupy a single physicalport, easing hardware requirements in SAN design, especially wherevirtual SANs are used.

SUMMARY

In one aspect of the present invention, a method, a computer programproduct, and a system for assigning a set of network names to storageaccess paths of virtual machines accessing storage resources via storagearea networks, includes: creating a computer system cluster, defining avirtual machine to be selectively deployed on a computer system of aplurality of computer systems of a computer system cluster, determininga count of storage access paths for the virtual machine, the count beingthe number of access paths that the virtual machine is able to use onthe computer system of the plurality of computer systems with thegreatest number of access paths, establishing a plurality of source portnames corresponding to the count of storage access paths, and assigninga source port name from the plurality of source port names to eachsource host adapter of the plurality of computer systems. The sourcehost adapter provides a virtual machine with access to a storageresource in a storage area network. The source port name is used by thevirtual machine when deployed on the computer system of the computersystem cluster. To migrate virtual machines dynamically from onecomputer system to another computer system, additional network namesproviding equivalent storage access capabilities are employed, such thatthe virtual machine has access to its storage resources from both thesource computer system and the target computer system while themigration is performed.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a schematic view of a first embodiment of a system accordingto the present invention;

FIG. 2 is a flowchart showing a method performed, at least in part, bythe first embodiment system;

FIG. 3 is a schematic view of a machine logic (for example, software)portion of the first embodiment system;

FIG. 4 is a schematic view of a second embodiment of a system accordingto the present invention;

FIGS. 5A, 5B, and 5C are a flowchart showing a method performed, atleast in part, by the second embodiment system;

FIG. 6 is a schematic view of a machine logic (for example, software)portion of the second embodiment system;

FIG. 7 is a schematic view of a third embodiment of a system accordingto the present invention;

FIG. 8 is a flowchart showing a method performed, at least in part, bythe third embodiment system;

FIG. 9A is a first schematic view of a machine logic (for example,software) portion of the third embodiment system; and

FIG. 9B is a second schematic view of a machine logic (for example,software) portion of the third embodiment system.

DETAILED DESCRIPTION

In a computer system cluster, or cloud environment, virtual machinesaccess fiber channel storage area network (FC-SAN)-attached storageresources via host bus adapters. The virtual machines are flexiblydeployed on computer systems of the cluster or cloud, and require accessto certain storage resources irrespective of the computer systems onwhich they are deployed. To migrate virtual machines dynamically fromone computer system to another computer system, additional network namesproviding equivalent storage access capabilities are employed, such thatthe virtual machine has access to its storage resources from both thesource computer system and the target computer system while themigration is performed. The present invention may be a system, a method,and/or a computer program product. The computer program product mayinclude a computer readable storage medium (or media) having computerreadable program instructions thereon for causing a processor to carryout aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network, and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers, and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computer,or entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus, or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The present invention will now be described in detail with reference tothe Figures. FIG. 1 is a functional block diagram illustrating anetworked computers system for flexible deployment and migration of VSswith SAN-attached storage on a computer system cluster, generallydesignated 100, in accordance with one embodiment of the presentinvention.

An embodiment of a possible hardware and software environment forsoftware and/or methods according to the present invention will now bedescribed in detail with reference to the Figures. FIG. 1 is afunctional block diagram illustrating various portions of networkedcomputers system 100, including: cluster management sub-system 102;physical servers (PSs) 104, 106; virtual host bus adapter (vHBA) 105;virtual server (VS) 103; storage area network (SAN) 109; storagecontroller 110; storage resource 111, 112; communication network 114;management computer 200; communication unit 202; processor set 204;input/output (I/O) interface set 206; memory device 208; persistentstorage device 210; display device 212; external device set 214; randomaccess memory (RAM) device 230; cache memory device 232; program 300;and migration names store 234.

Networked computers system 100 includes physical servers 104, 106communicating with cluster management sub-system 102 via network 114. Aphysical server may be a laptop computer, tablet computer, netbookcomputer, PC, a desktop computer, a personal digital assistant (PDA), asmart phone, or any programmable electronic device capable ofcommunicating with cluster management sub-system 102 via network 114,and with SAN 109 via vHBA 105. The physical servers are capable ofrunning virtual servers via hypervisors (not shown), and have physicalHBAs (not shown) that can be virtualized to a plurality of vHBAs, suchas vHBA 105, assigned to virtual servers to access the storage resourcesvia SANs. Storage controller 110, on which HBAs are installed andstorage resources are stored (e.g., storage devices 111, 112),communicates with the SANs via HBAs. In the discussion that follows,frequent reference is made to a virtual server, which is one example ofa virtual machine. Further, a physical server (PS) is one example of acomputer system (CS).

Sub-system 102 is, in many respects, representative of the variouscomputer sub-system(s) in the present invention. Accordingly, severalportions of sub-system 102 will now be discussed in the followingparagraphs.

Sub-system 102 may be a laptop computer, tablet computer, netbookcomputer, personal computer (PC), a desktop computer, a personal digitalassistant (PDA), a smart phone, or any programmable electronic devicecapable of communicating with the other sub-systems via network 114.Program 300 is a collection of machine readable instructions and/or datathat is used to create, manage, and control certain software functionsthat will be discussed in detail below.

Sub-system 102 is capable of communicating with other computersub-systems via network 114. Network 114 can be, for example, a localarea network (LAN), a wide area network (WAN) such as the Internet, or acombination of the two, and can include wired, wireless, or fiber opticconnections. In general, network 114 can be any combination ofconnections and protocols that will support communications betweenserver and client sub-systems.

Sub-system 102 is shown as a block diagram with many double arrows.These double arrows (no separate reference numerals) represent acommunications fabric, which provides communications between variouscomponents of sub-system 102. This communications fabric can beimplemented with any architecture designed for passing data and/orcontrol information between processors (such as microprocessors,communications and network processors, etc.), system memory, peripheraldevices, and any other hardware components within a system. For example,the communications fabric can be implemented, at least in part, with oneor more buses.

Memory 208 and persistent storage 210 are computer readable storagemedia. In general, memory 208 can include any suitable volatile ornon-volatile computer readable storage media. It is further noted that,now and/or in the near future: (i) external device(s) 214 may be able tosupply, some or all, memory for sub-system 102; and/or (ii) devicesexternal to sub-system 102 may be able to provide memory for sub-system102.

Program 300 is stored in the persistent storage 210 for access and/orexecution by one or more of the respective computer processors 204,usually through one or more memories of memory 208. The persistentstorage 210: (i) is at least more persistent than a signal in transit;(ii) stores the program (including its soft logic and/or data), on atangible medium (such as magnetic or optical domains); and (iii) issubstantially less persistent than permanent storage. Alternatively,data storage may be more persistent and/or permanent than the type ofstorage provided by persistent storage 210.

Program 300 may include both machine readable and performableinstructions and/or substantive data (that is, the type of data storedin a database). In this particular embodiment, the persistent storage210 includes a magnetic hard disk drive. To name some possiblevariations, the persistent storage 210 may include a solid state harddrive, a semiconductor storage device, read-only memory (ROM), erasableprogrammable read-only memory (EPROM), flash memory, or any othercomputer readable storage media that is capable of storing programinstructions or digital information.

The media used by persistent storage 210 may also be removable. Forexample, a removable hard drive may be used for persistent storage 210.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer readable storage medium that is also part of persistent storage210.

Communications unit 202, in these examples, provides for communicationswith other data processing systems or devices external to sub-system102. In these examples, communications unit 202 includes one or morenetwork interface cards. Communications unit 202 may providecommunications through the use of either or both physical and wirelesscommunications links. Any software modules discussed herein may bedownloaded to a persistent storage device (such as persistent storagedevice 210) through a communications unit (such as communications unit202).

I/O interface set 206 allows for input and output of data with otherdevices that may be connected locally in data communication withmanagement computer 200. For example, I/O interface set 206 provides aconnection to external device set 214. External device set 214 willtypically include devices such as a keyboard, keypad, a touch screen,and/or some other suitable input device. External device set 214 canalso include portable computer readable storage media such as, forexample, thumb drives, portable optical or magnetic disks, and memorycards. Software and data used to practice embodiments of the presentinvention, for example, program 300, can be stored on such portablecomputer readable storage media. In these embodiments the relevantsoftware may (or may not) be loaded, in whole or in part, ontopersistent storage device 210 via I/O interface set 206. I/O interfaceset 206 also connects in data communication with display device 212.

Display device 212 provides a mechanism to display data to a user andmay be, for example, a computer monitor or a smart phone display screen.

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of the presentinvention. However, it should be appreciated that any particular programnomenclature herein is used merely for convenience, and thus the presentinvention should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature.

Program 300 operates to implement flexible deployment and non-disruptivemigration of VSs with SAN-attached storage resources on a servercluster, such as the deployment of VS 103 on PS 104, and migration of VS103 between PS 104 and PS 106, while maintaining access to its storageresources 111, 112 during the migration. A server cluster is one exampleof a computer system cluster and will be referred to in examplesthroughout this detailed description.

Some embodiments of the present invention recognize the following facts,potential problems and/or potential areas for improvement with respectto the current state of the art: (i) VSs with SAN-attached storageresources can be deployed flexibly on PSs in a server cluster/cloudenvironment, i.e., being able to access their storage resourcesindependent of PSs on which they are running; (ii) VSs can bedynamically migrated among PSs while retaining access from both thesource PS and the target PS to their storage resources via SANs duringthe migration; (iii) the number of concurrent VS migrations that can beperformed requires to be determined; and/or (iv) the dynamic VSmigrations can be unlimited.

FIG. 2 shows flowchart 250 depicting a first method according to thepresent invention. FIG. 3 shows program 300 for performing at least someof the method steps of flowchart 250. This method and associatedsoftware will now be discussed, over the course of the followingparagraphs, with extensive reference to FIG. 2 (for the method stepblocks) and FIG. 3 (for the software blocks).

Processing begins at step S252, where server cluster module 352 definesa server cluster (see definition at the end of this detaileddescription). A server cluster includes, but is not limited to: (i) twophysical servers; (ii) a virtual server; (iii) a vHBA; (iv) a SAN; and(v) storage resources. In this example a vHBA is the host adapterthrough which the virtual machines access the SAN-attached storage. AvHBA is just one example of a host adapter that may be used whenpracticing some embodiments of the present invention. The server clusteris defined according to the system requirements for deploying virtualservers. A storage access group (SAG), as defined in the presentinvention, is a logical construct, containing: (i) all virtual serversthat shall have equivalent access to a particular set of storageresources; (ii) the physical HBAs that can be used to establish aconnection to these storage resources, where these HBAs can be installedon one or multiple physical servers; and (iii) the set of WWPNs that canbe assigned to vHBAs instantiated on these physical HBAs in order toaccess the storage resources. SAGs can be used as a communicationvehicle between server, SAN, and storage administrators to consistentlyset up access rights in the SAN and in storage controller, andaccordingly set up vHBA configurations on server side. Without SAGs,individual WWPNs with specific access requirements would have to becommunicated between these three classes of administrators, where themeaning and purpose of each individual WWPN may not be obvious. It iswithin the server cluster that virtual machines are authorized tomigrate. In some embodiments of the present invention, the entirenetworked computers system is defined as the server cluster.

Processing proceeds to step S253, where port name module 353 determinesa set of port names associated with the server cluster. A port name isdetermined for each vHBA for each virtual server in a server cluster.Further, in this example, additional port names are determined accordingto a pre-determined migration scheme. Migration schemes include: (i)unlimited concurrent migrations; (ii) limited concurrent migrations;and/or (iii) a combination of schemes (i) and (ii). Regardless of themigration scheme, additional port names are generated and stored inmigration names store 234. Alternatively, additional port names aregenerated and stored in migration names store 234, after completion ofthe full initial deployment of virtual servers on physical servers.

Processing proceeds to step S254, where virtual server deployment module354 deploys virtual server 103 on source physical server 104, within theserver cluster, which is, in this example, networked computer system100. Deployment of virtual servers is performed in conventional ways andis discussed in more detail below.

Processing proceeds to step S255, where vHBA module 355 instantiatessource vHBA 105 on source physical server 104. As discussed in moredetail below, the vHBA is conventionally deployed on a physical HBA,located on the physical server. Some embodiments of the presentinvention employ the vHBA on the physical server to access a SAN and itsassociated storage resources. Alternatively, some embodiments of thepresent invention may use physical HBAs (PHBAs) instead of virtualizedHBAs to access the SAN. But this considerably limits the number of VSsthat can be deployed. For example, if a PS provides two HBAs, only twovirtual machines could be running on the PS, where each VS needs only asingle path, or one single VS that needs 2 paths. For such embodiments,a further aspect to be considered is the assignment of port names(WWPNs). Port names have been configured for one or more VSs to allowaccess to its/their storage resources. So, when using a PHBA exclusivelyfor a particular VS, it is required that an appropriate WWPN can beassigned to the PHBA. Often, PHBAs have fixed, burnt-in WWPNs thatcannot be dynamically replaced, while WWPNs typically can be dynamicallyassigned to vHBAs.

Processing proceeds to step S256, where assign port name module 356assigns a source port name, from the set of port names determined instep S253, to the source vHBA instantiated in step S255. In thisembodiment, a single source port name is assigned at this step.Alternatively, and as will be discussed in more detail below, theassignment of a source port name involves the assignment of a pair ofport names.

Processing ends at step S257, where SAN access module 357 logs into SAN109, within the server cluster, to establish a connection to storageresources 111, 112 through source vHBA 105. When access to the storagedevice is obtained, full deployment of the virtual server is complete.In this example, full deployment is complete when target names arestored in migration names store 234, and SAN access is established withvirtual server 103.

Many embodiments of the present invention facilitate migration ofvirtual server 103, from source PS 104 to target PS 106, whilemaintaining a connection to storage resources 111, 112. In each scenariodescribed in detail below, a target port name is stored in migrationnames store 234 for use in migration of the virtual server. In someembodiments, the target port name is permanently paired with the sourceport name associated with a particular VS. In other embodiments, thetarget port name and the source port name is a floating name that isused and reused over the course of many migrations.

Some embodiments of the present invention support unlimited migrationsof VSs among the PSs in a server cluster. Some embodiments of thepresent invention implement a limited number of VS migrations, usingWWPNs from a WWPN migration pool shared among the PSs in the servercluster. Regardless of the implementation, some embodiments of thepresent invention may perform one, or more, of the following functions:(i) defining SAGs including VSs and HBAs; (ii) creating a set of WWPNsor WWPN pairs for the VSs of a SAG; (iii) deploying VSs on a particularPS; (iv) instantiating vHBAs on HBAs; (v) assigning WWPNs to vHBAs;and/or (vi) logging in and/or out of SANs.

An example embodiment of a possible hardware and software environmentfor software and/or methods according to the present invention will nowbe described in detail with reference to the Figures. FIG. 4 is afunctional block diagram illustrating various portions of networkedcomputers system 400 according to this example embodiment, including:cluster manager 428; network 420; WWPN store 422; WWPN pool 424; WWPNpairs 426; physical servers 406, 408; host bus adapters 402, 404, 436,438; virtual host bus adapters 432, 434, 440, 442; virtual server 410;storage area network (SAN) 412; storage controller 414; storage devices416, 418; and program 430.

FIGS. 5A, 5B, and 5C show flowchart 500 depicting a second methodaccording to the present invention. FIG. 6 shows program 430 forperforming at least some of the method steps of flowchart 500. Thismethod and associated software will now be discussed, over the course ofthe following paragraphs, with extensive reference to FIGS. 5A, 5B, and5C (for the method step blocks) and FIG. 6 (for the software blocks).

Processing begins at step S502, where storage access group (SAG) module602 defines SAGs including: (i) one or more PSs; (ii) VSs on the one ormore PSs; and (iii) HBAs that can be used by these VSs, on one or morePSs, to access a set of storage resources. In this example, virtualserver 410 runs on two physical servers 406, 408 to access two storagedevices 416, 418 via SAN 412. Virtual server 410 runs on PS 406 usingHBAs 402, 404 and on PS 408 using HBAs 436, 438. The corresponding SAGis shown in Table 1, including: VS 410; HBAs 402, 404, 436, 438; andstorage devices 416, 418. Some embodiments of the present inventiondefine SAGs that include large numbers of VSs that run on various PSs,each of which uses multiple HBAs to access storage devices via multipleSANs in an enterprise environment. For example, 1000 VSs running on 20PSs having 4 HBAs on each PS can result in 80,000 WWPNs. Accordingly,access control (including zoning and/or LUN masking) must be set up for80,000 WWPNs.

TABLE 1 Example SAG defined in step S502. SAG Virtual Servers VS 410Storage devices 416, 418 HBAs 402, 404, 436, 438

Processing proceeds to step S504, where WWPN module 604 creates a set ofWWPNs for each VS in the SAGs corresponding to the maximum number ofstorage access paths of the VS. Alternatively, in some embodiments ofthe present invention, module 604 creates a set of WWPN pairs for eachaccess path of the VS if unlimited concurrent migrations are required.As discussed herein, VS 410 executes on PS 406 having HBAs 402, 404 andon PS 408 having HBAs 436, 438. A set of two WWPNs (e.g., w410 a, w410 b1) are created and assigned to VS 410 as shown in Table 2.

TABLE 2 A set of WWPNs created in step S504. PS HBA vHBA VS 410 PS 406402 432 W410a1 404 434 W410b1 PS 408 436 440 W410a1 438 442 W410b1

Processing proceeds to step S506, where VS deployment module 606 deploysVSs on a particular PS. In the exemplary embodiment, as shown in Table2, for example, VS 410 is deployed on PS 406.

Processing proceeds to step S508, where HBA module 608 instantiatesvHBAs on the HBAs of PSs where the VSs are deployed. In someembodiments, an HBA is virtualized to represent a plurality of vHBAs(e.g., vHBA1, vHBA2, etc.). Each vHBA of the plurality of vHBAs may beassigned a unique WWPN. From a SAN and storage controller point of view,vHBAs are treated as HBAs, and access control (such as zoning and LUNmasking) is provided on the vHBA base. In the exemplary embodiment, asshown in Table 2, one vHBA is created on each HBA, and accordingly, aunique WWPN is assigned to the vHBA corresponding to each HBA.

Processing proceeds to step S510, where vHBA assignment module 610assigns a unique WWPN to each vHBA. In the exemplary embodiment, asshown in Table 2, each vHBA is assigned a WWPN. In other embodiments,each vHBA is assigned one WWPN, from each WWPN pair created in stepS504, if unlimited migrations of VSs among PSs are required.

Processing proceeds to step S512, where SAN connection module 612 logthe VSs to SANs to establish connections to the storage devices via eachof the vHBAs. Upon the establishment of connections, VSs access theirstorage resources stored on the storage devices via each of storageaccess paths. In some embodiments of the present invention, nomigrations are required. In such a case, processing ends at step S512 asthe completion of a full VS deployment.

Further embodiments of the present invention are discussed in theparagraphs that follow later. In some embodiments of the presentinvention, migrations are performed after the full deployment of VSs onPSs in a server cluster environment, as described in the first methodaccording to the present invention. Depending on whether or not theconcurrent migration number is limited as, determined in step S514, bymigration determination module 614, a first and second method formigration according to the present invention is provided accordingly.

FIG. 5B is a continuation of flowchart 500 from the “no” branch ofdecision step S514. Processing proceeds to step S516, where WWPNmigration pool module 616 creates a set of additional WWPNs as part ofSAG to be used for migration, and assign them to a migration pool inmigration pool 424 in FIG. 4. Alternatively, in some embodiments for alimited number of concurrent migrations, the additional WWPNs arecreated during the process of full deployment, for example, in step S504in FIG. 5A. Such additional WWPNs are then stored, for example, in aWWPN pool, such as WWPN pool 424 in FIG. 4. In this example, VS 410 isdeployed on PS 406 using the aforementioned method. A set of additionalWWPNs are generated for VS 410 migration (e.g., w410 a 2 and w410 b 2)and stored in WWPN migration pool 424.

Processing proceeds to step S518, where SAG module 602 selects HBAs tobe used by a VS on a target PS, when the VS shall be migrated from asource PS to the target PS. In this example, VS 410 shall migrate fromPS 406 to PS 408 having HBA 436, 438 that can be selected to assign tothe VS 410 on the target PS 408.

Processing proceeds to step S520, where HBA virtualization module 608instantiates a vHBA on each of the selected HBAs. In this example, vHBA440 is virtualized on HBA 436, and vHBA 442 is virtualized on HBA 438 ontarget PS 408.

Processing proceeds to step S522, where WWPN migration pool module 616acquires a WWPN from WWPN migration pool 424 for each of the vHBAs, andvHBA assignment module 610 assigns the WWPN to the vHBA. In thisexample, the WWPN “w410 a 2” is acquired and assigned to vHBA 440 on HBA436 on PS 408 and the WWPN “w410 b 2” is acquired from the migrationpool and assigned to vHBA 442 on HBA 438 on PS 408.

Processing proceeds to step S524, where SAN connection module 612 logsVS 410 into SAN 412 and establishes connections to storage devices 416,418 via each of the vHBAs.

Processing proceeds to step S526, where migration module 618 performslive migration of VS 410 from source PS 406 to target PS 408. For theduration of the migration, VS 410 uses two WWPNs (a pair of names) foreach of its access paths, one for the source physical server and anotherfor the target physical server.

Processing proceeds to step S528, where SAN connection module 612 logsout VS 410 from the fabric on source PS 406 and releases associatedvHBAs 432, 434 in order to free up the corresponding WWPNs (i.e., w410 a1 and w410 b 1). VS 410 continues using the assigned WWPNs “w410 a 2”and “w410 b 2” on PS 408 for ongoing access to storage devices 416, 418.

Processing ends at step S530, where WWPN migration pool module 616returns the freed WWPNs (w410 a 1 and w410 b 1) to migration pool 424.The returned WWPNs are made available for use by any migrating VS in theSAG.

When the numbers of concurrent VS migrations are unlimited, effectively,two WWPNs forming a WWPN pair are provided for each access path of eachVS. In that way, during VS migration, one WWPN from each pair is usedfor each path on the PS that is the source of the migration. The otherWWPN of the WWPN pair is used for each access path on the destinationPS. The destination PS is the PS to which the VS is migrating. A pair ofWWPNs is permanently assigned to each access path of each VS so that ifa VS uses a different number of paths on different PSs, then one WWPN isassigned per the maximum number of access paths that the VS may use.When a VS is deployed on a PS, a vHBA is instantiated on each HBA of thePS that the VS will use, and one of the WWPNs of each WWPN pair isassigned to that vHBA, as-needed.

Accordingly, for unlimited concurrent migrations embodiments, in someembodiments, a set of WWPN pairs corresponding to the maximum number ofstorage access paths of the virtual server in the SAG are created in theprocess of full deployment of the VS on a physical server in the SAG,for example, in step S504 of flowchart 500 in FIG. 5A. Alternatively, insome embodiments, instead of creating a set of WWPN pairs simultaneouslyin the process of full deployment, additional WWPNs corresponding to themaximum number of storage access paths of the virtual server in the SAGare instead generated during the process of full deployment and arestored in a WWPN pair pool (e.g., WWPN pairs 426 in FIG. 4), and arepaired with the WWPNs (used for the full deployment of the VS) on-demandprior to each first migration of each virtual server. Alternatively, insome embodiments, additional WWPNs corresponding to the maximum numberof storage access paths of the virtual server in the SAG are generatedafter completion of the process of full deployment and are stored in aWWPN pair pool (e.g., WWPN pairs 426 in FIG. 4), and are paired with theWWPNs (used for the full deployment of the VS) on-demand prior to eachfirst migration of each virtual server.

FIG. 5C is a continuation of flowchart 500 from the “yes” branch ofdecision step S514. In this exemplary embodiment, referring to FIG. 4,VS 410 having two access paths is deployed on PS 406 having HBAs 402,404 according to flowchart 500 in FIG. 5A, wherein a set of WWPN pairsare created in step S504 corresponding to the maximum number of storageaccess paths to the virtual server with the SAG (i.e., two pairs ofWWPNs for VS 410), and are assigned one WWPN of each pair to each vHBAin step S510. As shown in Table 3, in this example, two WWPN pairs arecreated for and assigned to VS 410 as follows: (i) the WWPN pair “w410 a1/w410 a 2” is used for HBA 402; and (ii) the WWPN pair “w410 b 1/w410 b2” is used for HBA 404. vHBA 432 is created on HBA 402 on PS 406 and isassigned WWPN “w410 a 1.” vHBA 434 is created on HBA 404 on PS 406 andis assigned WWPN “w410 b 1.” When VS 410 migrates from source PS 406 totarget PS 408 (having two HBAs 436, 438), steps in flowchart 500 asshown in FIG. 5C are executed as follows.

TABLE 3 A set of WWPN pairs created according to step S504. PS HBA vHBAVS 410 VS 410 Deployment PS 406 402 432 W410a1/W410a2 W410a1 404 434W410b1/W410b2 W410b1 PS 408 436 440 438 442

Processing proceeds to step S532, where SAG module 602 selects HBAs 436,438 to be used by VS 410 on target PS 408 when VS 410 migrates fromsource PS 406 to target PS 408.

Processing proceeds to step S534, where HBA virtualization module 608instantiates a vHBA on each of the HBAs selected. In this example, vHBA440 is virtualized on HBA 436, and vHBA 442 is virtualized on HBA 438 ontarget PS 408.

Processing proceeds to step S536, where WWPN pair module 620 acquiresone of the WWPNs of WWPN pairs store 426 in the SAG and assigns the WWPNto a vHBA. In this example, the WWPN “w410 a 2” is acquired by the pairmodule and assigned to vHBA 440 on HBA 436 of PS 408, and the WWPN “w410b 2” is acquired by the pair module and assigned to vHBA 442 on HBA 438of PS 408.

Processing proceeds to step S538, where SAN connection module 612 logsVS 410 in to SAN 412 and establishes connections to storage devices 416,418 via each of these vHBAs 440, 442.

Processing proceeds to step S540, where migration module 618 performslive migration of VS 410 from source PS 406 to target PS 408. For theduration of the migration, VS 410 uses a fixed pair of WWPNs for each ofits access paths, one for the source PS and another for the target PS.

Processing ends at step S542, where SAN connection module 612 logs outVS 410 from the fabric on source PS 406 and releases associated vHBAs432, 434 to free up the corresponding WWPNs. In this example, when themigration is completed, the associated vHBAs are released, freeing upthe associated WWPNs (i.e., w410 a 1 and w410 b 1). VS 410 continuesusing the newly assigned WWPNs (i.e., w410 a 2 and w410 b 2) for thevHBAs on PS 408 for continued access to storage devices 416, 418.

While SAGs provide significant advantages in managing SAN access for VSsvia vHBAs in a cluster environment, some embodiments of the presentinvention that use WWPN migration pools, and/or statically assign WWPNpairs (or otherwise assign WWPN pairs) to each access path of a VS,operate without SAGs. However, where there is no SAG architecture, othermechanisms must be used to ensure that the appropriate access rights areestablished for the WWPNs used on the PSs where the VSs are deployed.

In the above discussion, embodiments of the present invention aredescribed with respect to a single server cluster, where SAGs may beused for organizing storage access for individual virtual servers, orgroups of virtual servers, deployed on the cluster. The discussion thatfollows introduces likely commercial embodiments where multi-clustermanagement is employed. Some embodiments of the present invention manageserver cluster configuration data, for example, using a clustermanagement system. FIG. 7 is a functional block diagram illustratingvarious portions of cluster management system 700, including: clusters708, 710, 712; physical servers 702, 704; cluster manager 706; clusterconsole program 740; persistent storage adapter 742; processor 744;persistent storage 746; cluster management network adapter 748; clustermanagement network 750; cluster management network adapter 752,processor 754, memory 753, fibre channel adapter (i.e., HBAs) 756, 758;and storage area network(s) 760.

FIG. 8 shows flowchart 800 depicting a third method according to thepresent invention. FIGS. 9A and 9B show programs 740 a and 740 b forperforming at least some of the method steps of flowchart 800. Thismethod and associated software will now be discussed, over the course ofthe following paragraphs, with reference to FIG. 7 (for the systemblocks), FIG. 8 (for the method step blocks), and FIGS. 9A and 9B (forthe software blocks).

Cluster configuration data is maintained on cluster manager 706, andpersisted on persistent storage 746 (e.g., disk storage) internal to orattached to the manager. Cluster manager 706 is connected to, forexample, physical servers 702, 704 of cluster 708 through clustermanagement network 750. Cluster manager 706 pushes configuration datadown to individual physical servers 702, 704 through cluster managementnetwork 750, and retrieves physical configuration information as well,as runtime information, from the individual physical servers throughnetwork 750. For high availability, both the cluster management consoleand the cluster management network are, for example, typically deployedin a fully redundant way, employing appropriate data mirroring, backup,and/or restore concepts. Server cluster 708, discussed in detail below,with respect to cluster manager 706, is representative of other serverclusters that may be electrically connected to the cluster manager, suchas clusters 710 and 712.

Processing begins at step S802, where configuration module 920 deploysvirtual servers of a storage access group, on the corresponding cluster,in this example, cluster 708. Virtual servers are fully deployed on thephysical servers of the cluster by employing the afore-discussedmethods. In this example, during deployment of the virtual servers,configuration module 920 assigns WWPN(s) to fiber channel adapter(s)756, 758 for a current communication path(s) of the deployed virtualserver(s).

Processing proceeds to step S804, where configuration module 920determines if an unlimited number of concurrent VS migrations aredemanded. If “No”, then there are a limited number of concurrent VSmigrations being considered, so processing proceeds to step S806. If“Yes”, processing proceeds to step S814.

According to the “no” decision branch, processing proceeds to step S806,where virtual server sub-module 916 a in SAG module 910 a stores theWWPN(s) initially assigned to the adapters (such as vHBAs, HBAs) duringthe full deployment to static names store 912 a. These WWPNs remainassigned to the adapters until VS migration occurs.

Processing proceeds to step S808, where migration limit module 914 a incluster console program 740 a determines the upper limit of concurrentmigrations. The upper limit of concurrent migrations is determined in aconventional manner. The requirement for a certain number of concurrentmigrations is a characteristic of the workload and the processingenvironment. For instance, some workloads are dynamically moved aroundwithin a cluster, which calls for a high number of concurrentmigrations, while others are more static. Also, in preparation for aphysical server shutdown, some environments require that the workload bequickly moved to other servers, which again calls for a high number ofconcurrent migrations, while in other environments it may be acceptableto do that piece by piece. For a high number of concurrent migrations, alarger number of WWPNs are required and need to be configured, whichmeans higher effort for the administrators. Also, the maximum number ofWWPNs per SAN or per Fibre Channel switch is typically limited.Therefore, administrators try to avoid using and configuring more WWPNsthan required.

Processing proceeds to step S810, where virtual server sub-module 916 adetermines the number of WWPNs to be stored in migration pool 913 a. Thesize of the WWPN migration pool is defined by: (i) the upper limit, N,of concurrent VS migrations that need to be supported; and (ii) themaximum number of parallel access paths that a VS may use on any PS(i.e., the number of adapters) in the SAG. In this example, both ofthese values are specified by the administrator. Alternatively, theupper limit value and/or the parallel paths value is determined bycorporate policy, or by an architect during program development. Thus,the number of WWPNs required in the migration pool is:Σ(p _(i)),(i=1, . . . ,N),where N is the maximum number of concurrent migrations, and

p_(i)(i=1, . . . , N) are the number of parallel access paths of thoseVSs for which the maximum number of parallel access paths is specified.For example, when sorting the VSs by the number of access paths theyhave specified, this is the sum of the access paths of the top VSsaccording to such a list.

Processing proceeds to step S812, where physical server sub-mod 915 acreates a set of additional WWPNs for the SAG, and manages theseadditional WWPNs in migration pool 913 a. As discussed in more detailabove, during VS migration, these WWPNs are dynamically assigned to theadapters (such as vHBAs) of the destination physical servers within thecluster where the virtual servers are to be migrated. WWPNs formigrations are taken from the WWPN migration pool as-needed to performVS migrations. When the VS migrations are completed, the WWPNs that aretaken from the WWPN migration pool to accomplish the migrations, becomethe WWPNs used for static operation. These WWPNs are stored in staticnames database 912 a. Further, the WWPNs that had previously been usedfor static operation are moved to WWPN migration pool 913 a.

Processing ends at step S820, where the above steps are performed forthe virtual servers of each of other SAGs of cluster 708, via SAGmodules 910 b, 910 c, through 910 n, where “n” is the number of SAGsdefined for server cluster 708. Corresponding operations may beperformed for virtual servers to be deployed on server clusters 710,712, managed by cluster manager 706.

Some embodiments of the present invention where WWPN management usingWWPN migration pools may be included in the cluster console program 740a: (i) a physical configuration retrieval facility, such asconfiguration module 920, to determine the eligible HBAs on eachphysical server; (ii) a WWPN export facility, such as WWPN export module930, to convey the WWPNs for SAN configuration to administrators; and(iii) a WWPN pushdown facility, such as WWPN pushdown module 940, toassign WWPNs to the vHBAs hosted by HBAs on physical servers. Each SAGthat is defined for a virtual server or group of virtual serversincludes, but is not limited to: (i) a set of WWPNs for static operation(static names database 912 a); (ii) a set of WWPNs for migration of eachof the VSs among the physical servers defined in the SAG (migration pool913 a); (iii) a set of HBAs (such as adapters 756, 758) that are usedfor each of the physical servers in the SAG; and (iv) an upper limit forthe number of concurrent migrations (for example, determined bymigration limit module 914 a).

As noted herein, some embodiments of the present invention apply toscenarios where unlimited concurrent migrations of virtual servers areavailable among the physical servers defined in the associated SAG.Returning to decision step S804 and continuing from the “yes” decisionbranch, processing proceeds to step S814, where virtual serversub-module 955 a in SAG module 950 a stores the WWPN(s) initiallyassigned to the adapters (such as vHBAs, HBAs) during full deployment tostatic names store 952 a. These WWPNs remain assigned to the adaptersuntil VS migration occurs.

Processing proceeds to step S816, where physical server sub-module 954 acreates additional WWPNs corresponding to the number of initiallyassigned WWPNs. In this example, where each migrating virtual server isassociated with a permanent pair of WWPNs, the number of WWPNs isdirectly proportional to the number of virtual servers.

Processing proceeds to step S818, where virtual server sub-mod 955 apairs the WWPNs created in step S816 with an initially assigned WWPNprior to the migration of a corresponding virtual server. After amigration has completed, the WWPNs of each WWPN pair are swapped. Thatis, the WWPNs that had been activated for the migration process (frommigration pairs database 953 a) are now used for static operationprocess (stored in static names database 952 a) on the target physicalserver, and the WWPNs that had been used for static operation on theprevious PS now become inactive (transferred to migration pairs database953 a) and ready to be used for a subsequent migration. In thisembodiment, the pair of names are permanently paired for ongoingmigration. Alternatively, a new pairing is generated (as in step S818)upon each migration of the virtual server.

Processing ends at step S820 where the above steps are performed foreach of other SAGs of server cluster 708 via SAG modules 950 b, 950 c,through 950 n, where “n” is the number of SAGs defined for servercluster 708. Corresponding operations may be performed for virtualservers to be deployed on server clusters 710, 712, managed by clustermanager 706.

WWPN management using permanently assigned WWPN pairs, for example, asshown above, may include: (i) a physical configuration retrievalfacility (such as configuration module 920) to determine the eligibleHBAs on each physical server; (ii) a WWPN export facility (such as WWPNexport module 930) to convey the WWPNs for SAN configuration toadministrators; (iii) and a WWPN pushdown facility (such as WWPN pushdown module 940) to assign WWPNs to the vHBAs hosted by HBAs on physicalservers. No WWPN migration pools are required. Each SAG contains, but isnot limited to, a set of WWPNs pairs for each of its virtual server: onefor static operation, and one for migration operation that is usedduring a VS migration process only.

For determination of the number of WWPNs required for deployment andmigration of virtual servers on physical servers in the server cluster,different approaches may be used. In some embodiments of the presentinvention, WWPNs are permanently assigned to vHBAs in the SAGs. Forexample, if there are 1000 virtual servers each being able to run on 20physical servers using 4 HBAs on each physical server, the resultedWWPNs are 80,000 (1000*20*4). In some embodiments of the presentinvention for the same scenario, if the virtual servers are distributedacross 10 SAGs with 100 virtual servers per SAG, and WWPN migrationpools are employed to support up to 10 concurrent migrations per SAG,the resulted WWPNs are 4,400 ((1000*4)+(10*10*4)), which depends on thenumber of SAGs and the distribution of virtual servers across SAGs. Inother embodiments of the present invention for the same scenario, usinga WWPN migration pool supporting the maximum of 1000 concurrentmigrations results in 8,000 (1000*4*2) WWPNs, which is independent ofthe number of SAGs and how virtual servers are distributed across SAGs.Thus, a considerable number of WWPNs can be saved, in particular whenvirtual servers are potentially able to execute on a large number ofphysical servers in a cluster. Accordingly, a considerable amount of SANadministration work may be reduced, and SAN hardware can be saved whenthe maximum number of WWPNs that can be supported by certain components(e.g., SAN switches, storage controllers) is exhausted.

Some embodiments of the present invention may include one, or more, ofthe following features, characteristics and/or advantages: (i) theexpected capability of a VS to access all its storage devices on each PSon which the VS could be deployed, and via all the selected HBAs, can beverified when a SAG is created or modified, and/or when a VS is added toa SAG, and/or when a PS on which the VS can be deployed is activated;(ii) prior to a VS migration, it can be verified if access on thepotential target PS (still) exists; (iii) a simplified system and SANmanagement scheme can be applied without restrictions; (iv) the servercluster may include one, or more, PSs of different types; (v) each PSmay contain hypervisors of different types to provide different kinds ofvirtualization capabilities; and (vi) the scheme can also be applied inan environment where multiple hypervisors (HVs) are deployed on a singlePS in a hierarchical way, and consequently, everything discussedpreviously regarding PSs also applies to hypervisors (VS can be migratedfrom one HV to another HV on the same or a different PS); (vii) providesfor creating one, or more, SAGs by specifying the virtual machines thatshall have access to a set of storage resources, the host computersystems on which the virtual machines can be executed, the host busadapters of the host computers, which shall be used for accessing thestorage area network, and the maximum number of storage access paths ona single host computer system for each virtual machine; (viii) providesa set of WWPNs for the storage area network, such that the WWPNs equalthe maximum number of storage access paths; (ix) a vHBA is instantiatedfor each HBA when executing a virtual machine as specified by a SAG onone or the host computer systems specified by the SAG; (x) for eachinstantiated vHBA, assigns one port name from the assigned set of portnames for the virtual machine; (xi) for each SAG, a set of additionalWWPNs for the storage area network are assigned to a migration pool,such that the number of WWPNs in the migration pool meets apredetermined count; (xii) migration pool size is determined by amaximum number of concurrent virtual machine migrations, and a maximumnumber of vHBAs, a given virtual machine can consume on any hostcomputer system; and/or (xiii) when migrating a virtual machine, whichis specified by a SAG, from a first host computer system to a secondhost computer system, which are both specified by the same SAG, portnames from the migration pool are assigned to this virtual machine foruse on the second host computer system.

Some helpful definitions follow:

Present invention: should not be taken as an absolute indication thatthe subject matter described by the term “present invention” is coveredby either the claims as they are filed, or by the claims that mayeventually issue after patent prosecution; while the term “presentinvention” is used to help the reader to get a general feel for whichdisclosures herein that are believed as maybe being new, thisunderstanding, as indicated by use of the term “present invention,” istentative and provisional and subject to change over the course ofpatent prosecution as relevant information is developed and as theclaims are potentially amended.

Embodiment: see definition of “present invention” above—similar cautionsapply to the term “embodiment.”

and/or: inclusive or; for example, A, B “and/or” C means that at leastone of A or B or C is true and applicable.

User/subscriber: includes, but is not necessarily limited to, thefollowing: (i) a single individual human; (ii) an artificialintelligence entity with sufficient intelligence to act as a user orsubscriber; and/or (iii) a group of related users or subscribers.

Electrically Connected: means either directly electrically connected, orindirectly electrically connected, such that intervening elements arepresent; in an indirect electrical connection, the intervening elementsmay include inductors and/or transformers.

Data communication: any sort of data communication scheme now known orto be developed in the future, including wireless communication, wiredcommunication and communication routes that have wireless and wiredportions; data communication is not necessarily limited to: (i) directdata communication; (ii) indirect data communication; and/or (iii) datacommunication where the format, packetization status, medium, encryptionstatus and/or protocol remains constant over the entire course of thedata communication.

Computer: any device with significant data processing and/or machinereadable instruction reading capabilities including, but not limited to:desktop computers, mainframe computers, laptop computers,field-programmable gate array (fpga) based devices, smart phones,personal digital assistants (PDAs), body-mounted or inserted computers,embedded device style computers, application-specific integrated circuit(ASIC) based devices.

Computer system cluster: an arrangement of physical servers withconnectivity to storage devices in a SAN environment, where virtualmachines may be deployed on the physical servers of the cluster.

Storage Access Group (SAG): an arrangement of a set virtual servers, aset of physical servers within a server cluster on which these virtualservers can be deployed, HBAs installed on these physical servers thatcan be used by the virtual servers to access a common set ofSAN-attached storage resources, and port names that can be associatedwith these HBAs, or with vHBAs instantiated on these HBAs, whereappropriate access rights are ensured for these port names used on anyphysical servers where corresponding virtual machines may be deployed.

What is claimed is:
 1. A computer program product for assigning a set ofnetwork names to storage access paths of virtual machines accessingstorage resources via storage area networks, the computer programproduct comprising a computer readable storage medium having storedthereon: first program instructions programmed to create a computersystem cluster, wherein the computer system cluster includes: aplurality of virtual machines; and a plurality of servers, wherein eachserver of the plurality of servers includes one or more access pathsthat allows the plurality of virtual machines to access a plurality ofstorage related resources in a storage area network; second programinstructions programmed to identify a maximum number of storage accesspaths that a virtual machine is able to use on any of the plurality ofservers; third program instructions programmed to selectively deploy theplurality of virtual machines on the plurality of servers; for eachvirtual machine of the plurality of virtual machines deployed on theplurality of servers: fourth program instructions programmed to assign aplurality of source port names equal to the maximum number of storageaccess paths that the virtual machine can use on any of the plurality ofservers; fifth program instructions programmed to select a maximumnumber of concurrent live-migrations between the plurality of virtualmachines; sixth program instructions programmed to generate a pluralityof target port names, wherein a quantity of the plurality of target portnames is based on the product of: the maximum number of access pathsthat the virtual machine can use on any of the plurality of servers; andthe maximum number of concurrent live-migrations between the pluralityof virtual machines; and seventh program instructions programmed tostore the plurality of target port names in a port name pool.
 2. Thecomputer program product of claim 1 wherein each access path isestablished by instantiating a virtual host bus adapter of the virtualmachine on a host bus adaptor of a server of the plurality of servers.3. The computer program product of claim 2 wherein: each virtual hostbust adaptor to be instantiated on each server of the plurality ofservers is defined in a storage access group; and each port nameassigned to each virtual machine from the port name pool is defined inthe storage access group.
 4. The computer program product of claim 1,further comprising: eighth program instructions programmed to perform alive migration of the virtual machine from a source server to a targetserver; and ninth program instructions programmed to dynamically assignat least one target port name from the port name pool to the virtualmachine.
 5. The computer program product of claim 4, further comprising:responsive to the virtual machine completing the live migration from thesource server to the target server, tenth program instructionsprogrammed to store a source port name of the virtual machine as atarget port name in the port name pool.
 6. A computer system forassigning a set of network names to storage access paths of virtualmachines accessing storage resources via storage area networks, thecomputer system comprising: a processor(s) set; and a computer readablestorage medium; wherein: the processor(s) set is structured, located,connected, and/or programmed to run program instructions stored on thecomputer readable storage medium; the program instructions include:first program instructions programmed to create a computer systemcluster, wherein the computer system cluster includes: a plurality ofvirtual machines; and a plurality of servers, wherein each server of theplurality of servers includes one or more access paths that allows theplurality of virtual machines to access a plurality of storage relatedresources in a storage area network; second program instructionsprogrammed to identify a maximum number of storage access paths that avirtual machine is able to use on any of the plurality of servers; thirdprogram instructions programmed to selectively deploy the plurality ofvirtual machines on the plurality of servers; for each virtual machineof the plurality of virtual machines deployed on the plurality ofservers: fourth program instructions programmed to assign a plurality ofsource port names equal to the maximum number of storage access pathsthat the virtual machine can use on any of the plurality of servers;fifth program instructions programmed to select a maximum number ofconcurrent live-migrations between the plurality of virtual machines;sixth program instructions programmed to generate a plurality of targetport names, wherein a quantity of the plurality of target port names isbased on the product of: the maximum number of access paths that thevirtual machine can use on any of the plurality of servers; and themaximum number of concurrent live-migrations between the plurality ofvirtual machines; and seventh program instructions programmed to storethe plurality of target port names in a port name pool.
 7. The computersystem of claim 6 wherein each access path is established byinstantiating a virtual host bus adapter of the virtual machine on ahost bus adaptor of a server of the plurality of servers.
 8. Thecomputer system of claim 7 wherein: each virtual host bust adaptor to beinstantiated on each server of the plurality of servers is defined in astorage access group; and each port name assigned to each virtualmachine from the port name pool is defined in the storage access group.9. The computer system of claim 6, further comprising: eighth programinstructions programmed to perform a live migration of the virtualmachine from a source server to a target server; and ninth programinstructions programmed to dynamically assign at least one target portname from the port name pool to the virtual machine.
 10. The computersystem of claim 9, further comprising: responsive to the virtual machinecompleting the live migration from the source server to the targetserver, tenth program instructions programmed to store a source portname of the virtual machine as a target port name in the port name pool.